/*判断传入的时间与当前时间进行比较。如果在1分钟内，则返回'1分钟'；如果在1小时内，则返回'XX分钟'；
如果在1天内，则返回'xx小时'；如果在一个月内，则返回'xx天'；如果在1年内，则返回'xx月'；否则返回'xx年'  
可以简单考虑一年就是360天，一个月就是30天*/
export function formatTimeDiff(timestamp) {
    const now = Date.now();  // 获取当前时间戳‌:ml-citation{ref="1,2" data="citationList"}
	const diff = Math.abs(now - timestamp);  // 计算时间差（毫秒）‌:ml-citation{ref="4,5" data="citationList"}
    
    const seconds = Math.floor(diff / 1000);  // 转换为秒‌:ml-citation{ref="4,5" data="citationList"}
    const minutes = Math.floor(seconds / 60);
    const hours = Math.floor(minutes / 60);
    const days = Math.floor(hours / 24);
    const months = Math.floor(days / 30);  // 简化月计算‌:ml-citation{ref="7" data="citationList"}
    const years = Math.floor(days / 360);  // 简化年计算‌:ml-citation{ref="7" data="citationList"}

    // 阶梯判断逻辑‌:ml-citation{ref="1,2" data="citationList"}
    if (seconds < 60) return '刚刚';  // 小于60秒
    else if (minutes < 60) return `${minutes}分钟前`;
    else if (hours < 24) return `${hours}小时前`;
    else if (days < 30) return `${days}天前`;
    else if (days < 360) return `${months}月前`;
    return `${years}年内`;
}

/**
 * 修改文件名：删除后缀名前缀的 "_small" 并替换后缀名
 * @param {string} url - 原始文件 URL
 * @param {string} newExtension - 新的文件后缀名（包含点号）
 * @returns {string} - 修改后的新 URL
 */
export function modifyFilenameAndExtension(url, newExtension) {
  // 1. 提取文件名和后缀部分
  const lastSlashIndex = url.lastIndexOf("/");
  const filenameWithExt = url.substring(lastSlashIndex + 1);
  const lastDotIndex = filenameWithExt.lastIndexOf(".");

  // 2. 分离文件名和后缀（兼容无后缀场景）
  let filename = lastDotIndex !== -1 
    ? filenameWithExt.substring(0, lastDotIndex) 
    : filenameWithExt;

  // 3. 删除文件名末尾的 "_small"
  filename = filename.replace(/_small$/, "");

  // 4. 拼接新文件名和路径
  const newFilename = filename + newExtension;
  return url.substring(0, lastSlashIndex + 1) + newFilename;
}



/**
 * 从 URL 中截取图片的名字及后缀名
 * @param {string} url - 图片的完整 URL
 * @returns {string} - 图片的名字及后缀名
 */
export function getImageNameFromUrl(url) {
  // 检查是否是有效的URL
  if (!url || typeof url !== 'string') {
    return 'unknown_' + Date.now() + '.jpg';
  }

  try {
    // 尝试使用URL对象（浏览器环境）
    if (typeof URL !== 'undefined') {
      const urlObject = new URL(url);
      const path = urlObject.pathname;
      const lastIndex = path.lastIndexOf('/');
      return path.substring(lastIndex + 1) || 'unknown_' + Date.now() + '.jpg';
    }
    
    // 小程序环境下的处理
    // 处理类似 "qiniu://test.jpg" 或 "https://example.com/test.jpg" 的格式
    const lastSlashIndex = url.lastIndexOf('/');
    const lastQuestionIndex = url.lastIndexOf('?');
    
    // 获取文件名部分（去除查询参数）
    let fileName = lastQuestionIndex > -1 
      ? url.substring(lastSlashIndex + 1, lastQuestionIndex)
      : url.substring(lastSlashIndex + 1);
    
    // 如果还是没有获取到有效的文件名，生成一个随机文件名
    if (!fileName || fileName === url) {
      return 'unknown_' + Date.now() + '.jpg';
    }
    
    return fileName;
  } catch (e) {
    console.error('解析URL出错:', e);
    return 'unknown_' + Date.now() + '.jpg';
  }
}

 /**
  * 将云存储ID转换为可访问的URL
  * @param {string} cloudId - 云存储ID，例如: 
  *        cloud://env-00jxtaoeuh3f/wallpaper/category/1743343680583_1.jpg (阿里云)
  *        或 qiniu://wallpaper/category/1743343680583_1.jpg (七牛云)
  * @returns {string} 可访问的图片URL
  */
 const CDN = 'cdn.isscloud.site';
 export function cloudIdToUrl(cloudId, options) {
     if (!cloudId) return '';
     const { h, w } = options || {};
     let width = w;
     let height = h;
 
     if (typeof w === 'string' && w.endsWith('rpx')) {
         width = uni.upx2px(parseInt(w.replace('rpx', '').trim()));
     }
     if (typeof h === 'string' && h.endsWith('rpx')) {
         height = uni.upx2px(parseInt(h.replace('rpx', '').trim()));
     }
 
     // 如果已经是http/https链接，直接返回
     if (cloudId.startsWith('http://') || cloudId.startsWith('https://')) {
         return cloudId + ((height && width) ? `?imageView2/1/w/${width}/h/${height}` : '');
     }
 
     // 处理七牛云格式 qiniu://path/to/file
     if (cloudId.startsWith('qiniu://')) {
         const path = cloudId.replace('qiniu://', '');
 
         if (height && width) {
             return `https://${CDN}/${path}?imageView2/1/w/${width}/h/${height}`;
         }
		 if (width) {
		     return `https://${CDN}/${path}?imageView2/0/w/${width}`;
		 }
		 if (height) {
		     return `https://${CDN}/${path}?imageView2/0/h/${height}`;
		 }
         return `https://${CDN}/${path}`;
     }
 
     // 处理阿里云格式 cloud://env-id/path/to/file
     if (cloudId.startsWith('cloud://')) {
         const matches = cloudId.match(/^cloud:\/\/([^/]+)\/(.+)$/);
         if (matches && matches.length >= 3) {
             const env = matches[1]; // 环境ID
             const filePath = matches[2]; // 文件路径
             if (height && width) {
                 return `https://${env}.normal.cloudstatic.cn/${filePath}?imageView2/1/w/${width}/h/${height}`;
             }
             if (width) {
                 return `https://${env}.normal.cloudstatic.cn/${filePath}?imageView2/0/w/${width}`;
             }
             if (height) {
                 return `https://${env}.normal.cloudstatic.cn/${filePath}?imageView2/0/h/${height}`;
             }
             return `https://${env}.normal.cloudstatic.cn/${filePath}`;
         }
     }
 
     console.warn('Invalid cloud storage ID:', cloudId);
     return cloudId; // 返回原始值，避免报错
 }   
 
 /**
  * 将云存储URL转换为云存储ID
  * @param {string} url - 云存储URL，例如: 
  *        https://env-00jxtaoeuh3f.normal.cloudstatic.cn/wallpaper/category/1743343680583_1.jpg (阿里云)
  *        或 https://cdn.isscloud.site/wallpaper/category/1743343680583_1.jpg (七牛云)
  * @returns {string} 云存储ID
  */
 export function urlToCloudId(url) {
   if (!url) return '';
   
   // 如果已经是cloud://或qiniu://格式，直接返回
   if (url.startsWith('cloud://') || url.startsWith('qiniu://')) {
     return url;
   }
   
   // 处理七牛云URL
   if (url.includes(CDN)) {
     const path = url.replace(new RegExp(`^https?://${CDN}/`), '');
     return `qiniu://${path}`;
   }
   
   // 处理阿里云URL
   const aliMatches = url.match(/^https?:\/\/([^.]+)\.normal\.cloudstatic\.cn\/(.+)$/);
   if (aliMatches && aliMatches.length >= 3) {
     const env = aliMatches[1]; // 环境ID
     const filePath = aliMatches[2]; // 文件路径
     return `cloud://${env}/${filePath}`;
   }
   
   console.warn('Invalid cloud storage URL:', url);
   return url; // 返回原始值，避免报错
 }

